const async1 = async() => {
    console.log('async1');
    setTimeout(() => {   // 宏1
        console.log('timer1');
    }, 2000);
    await new Promise(resolve => {
        console.log('promise1');   // 知识点1：没有改变状态所以后面的都没有执行
    });
    console.log('async1 end');   // 微1（不执行）
    return 'async1 success'; // 微1（不执行）
};

console.log('script start');

async1().then(res => console.log(res));  // 微2（不执行）

console.log('script end');

Promise.resolve(1)   // 知识点2：值传透
    .then(2)
    .then(Promise.resolve(3))
    .catch(4)
    .then(res => console.log('res', res)); 

setTimeout(() => {           // 宏2
    console.log('timer2');
}, 1000);


// script start -> async1 -> promise1 -> script end -> res 1 -> timer1 -> timer2